<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml">
    <f:metadata>
        <f:event type="preRenderView" 
                 listener="#{especimenBean.validarAcceso}"/>
    </f:metadata>
    <ui:define name="cabecera">
        <title>Gestión de Especímenes</title>
        <link rel="shortcut icon"  href="/resources/imagenes/favicon.ico" />
    </ui:define>
    <ui:define name="contenido">
        
        <p:growl id="growl" showDetail="true" sticky="true" /> 
        
        <center>
            <p:panel id="especimenPnl" 
                     header="Listado de Especímenes" 
                     styleClass="contenido">
              <!-- Tabla de Especimen -->
                <h:form id="tablaEspecimenFrm">
                 
                    <p:dataTable id="tablaEspecimenDtb" 
                                 var="especimen"  rows="10"
                                 paginator="true" selectionMode="single" 
                                 resizableColumns="true"
                                 paginatorPosition="bottom"
                                 value="#{especimenBean.listaEntidades}"
                                 filteredValue="#{especimenBean.listaEntidadesFiltradas}"
                                 rowKey="#{especimen.codigoespecimen}"
                                 emptyMessage="No hay registros disponibles.">

                        <p:column headerText="Código" 
                                  filterBy="#{especimen.codigoespecimen}" 
                                  sortBy="#{especimen.codigoespecimen}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                                <h:outputText value="#{especimen.codigoespecimen}"/> 
                        </p:column>
                        <p:column headerText="Animal" 
                                  filterBy="#{especimen.animal.nombrecientifico}" 
                                  sortBy="#{especimen.animal.nombrecientifico}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                                <h:outputText value="#{especimen.animal.nombrecientifico}"/> 
                        </p:column>
                          <p:column headerText="Fecha Recolección" 
                                  filterBy="#{especimen.recoleccion.fecharecoleccion}" 
                                  sortBy="#{especimen.recoleccion.fecharecoleccion}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                                         <h:outputText value="#{especimen.recoleccion.fecharecoleccion}">
                                                    <f:convertDateTime pattern="dd/MM/yyyy"/>
                                         </h:outputText> 
                          </p:column>
                        <p:column headerText="Muestras"
                                  filterBy="#{especimen.numeromuestras}" 
                                  sortBy="#{especimen.numeromuestras}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                                <h:outputText value="#{especimen.numeromuestras}"/> 
                        </p:column>
                        <p:column headerText="Determinó"
                                  filterBy="#{especimen.determino}" 
                                  sortBy="#{especimen.determino}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                                <h:outputText value="#{especimen.determino}"/>
                        </p:column>
                        <p:column headerText="Confirmó"
                                  filterBy="#{especimen.confirmo}" 
                                  sortBy="#{especimen.confirmo}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                                <h:outputText value="#{especimen.confirmo}"/> 
                        </p:column>
                        <p:column headerText="Ubicación Almacén"
                                  filterBy="#{especimen.ubicacionalmacen}" 
                                  sortBy="#{especimen.ubicacionalmacen}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                              <h:outputText value="#{especimen.ubicacionalmacen}"/> 
                        </p:column>
                        <p:column headerText="Habitát"
                                  filterBy="#{especimen.habitat}" 
                                  sortBy="#{especimen.habitat}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                               <h:outputText value="#{especimen.habitat}"/> 
                       </p:column>
                       <p:column headerText="Conservación"
                                  filterBy="#{especimen.tipoconservacion}" 
                                  sortBy="#{especimen.tipoconservacion}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                                <h:outputText value="#{especimen.tipoconservacion}"/> 
                        </p:column>
                       <p:column headerText="Donación"
                                  filterBy="#{especimen.donacion ? 'Si' : 'No'}" 
                                  filterOptions="#{especimenBean.itemsDonacion}"
                                  styleClass="columna">
                                <h:outputText value="#{especimen.donacion ? 'Si' : 'No'}"/> 
                        </p:column>
                        <p:column headerText="Estado" 
                                  filterBy="#{especimen.estado}" 
                                  filterOptions="#{especimenBean.itemsEstado}"
                                  styleClass="columna">
                            <h:outputText value="#{especimen.estado}"/>
                        </p:column>
                       
                    <p:column 
                        headerText="Fotografía"
                        styleClass="columna">
                             <p:commandButton 
                                 id="fotografiaBtn"  
                                 icon="ui-icon-image"
                                 type="button"
                                 title="Ver fotografía"/>
                        <p:overlayPanel 
                            id="fotografiaPnl" 
                            for="fotografiaBtn" 
                            appendToBody="true" 
                            showEvent="mouseup"
                            hideEvent="mouseup" 
                            hideEffect="fade" 
                            dynamic="true">
                            <p:dataTable 
                                id="fotografiaTbl" 
                                var="fotografia"  
                                value=""
                                rows="1"
                                style="text-align: center; 
                                       font-size: 110%">
                                <p:column 
                                    headerText="Fotografía de Espécimen de 
                                    #{especimen.animal.nombrecientifico}">
                                    <p:graphicImage 
                                        url="/fotos/#{especimenBean.getFotograf(especimen)}"
                                        width="320"
                                        height="240"/>
                                </p:column>
                            </p:dataTable>
                        </p:overlayPanel>
                    </p:column>           
                        <p:column headerText="Rasgos físico" 
                                  styleClass="columna">
                            <p:commandButton id="fisicoBtn" type="button"  
                                             title="Ver rasgos físico" icon="ui-icon-search"/>  
                                <p:overlayPanel id="fisicoPnl" for="fisicoBtn" 
                                                appendToBody="true"  showEvent="mouseup"
                                                hideEvent="mouseup"  hideEffect="fade" 
                                                dynamic="true">  
                                    
                                      <p:dataTable id="tableFisico" rows="1"
                                                   var="fisico" value="">  
                                          <p:column headerText="Peso(gr.)"
                                                    styleClass="columna">
                                                    <h:outputText value="#{especimen.peso}"/> 
                                          </p:column>
                                          <p:column headerText="Sexo"
                                                    styleClass="columna"> 
                                                    <h:outputText value="#{especimen.sexo == 'M' ? 
                                                                           'Masculino' : especimen.sexo == 'F' 
                                                                           ? 'Femenino' : 'Hemafrodita'}" />  
                                        </p:column> 
                                        <p:column headerText="Madurez"
                                                  styleClass="columna">
                                                  <h:outputText value="#{especimen.madurez}"/> 
                                        </p:column>
                                        <p:column headerText="Longitud(mm)"
                                                  styleClass="columna">
                                                   <h:outputText value="#{especimen.longitud}"/> 
                                        </p:column>
                                        <p:column headerText="Diametro(mm)"
                                                  styleClass="columna">
                                                  <h:outputText value="#{especimen.diametro}"/> 
                                        </p:column>
                                        <p:column headerText="Altura(mm)"
                                                  styleClass="columna">
                                                    <h:outputText value="#{especimen.altura}"/> 
                                        </p:column>
                                        <p:column headerText="Textura"
                                                  styleClass="columna">
                                                  <h:outputText value="#{especimen.textura}"/> 
                                        </p:column>
                                        <p:column headerText="Coloración"
                                                  styleClass="columna">
                                                  <h:outputText  value="#{especimen.coloracion}"/> 
                                        </p:column>
                               </p:dataTable>  
                            </p:overlayPanel>
                         </p:column>  
                                  
                         <p:column headerText="Descripción"
                                   styleClass="columna">
                            <p:commandButton id="descripcionBtn" type="button" 
                                             title="Ver Descripción" icon="ui-icon-search"/>  
                            <p:overlayPanel id="descripcionPnl" for="descripcionBtn" 
                                            appendToBody="true" showEvent="mouseup"
                                            hideEvent="mouseup" hideEffect="fade" 
                                            dynamic="true">  
                              <p:dataTable id="tableDescripcion" value=""
                                           var="descripcion" rows="1">           
                                    <p:column headerText="Descripción Taxonómica"
                                              styleClass="columna">
                                            <h:outputText  value="#{especimen.descripciontaxonomica}"/> 
                                    </p:column>
                                    <p:column headerText="Observación"
                                              styleClass="columna">
                                            <h:outputText  value="#{especimen.observaciones}"/> 
                                    </p:column>
                                    <p:column headerText="Estado Muestra"
                                              styleClass="columna">
                                            <h:outputText value="#{especimen.estadomuestra}"/> 
                                    </p:column>
                                    <p:column headerText="Estatus Local"
                                              styleClass="columna">
                                            <h:outputText  value="#{especimen.estatuslocal}"/> 
                                    </p:column>
                               </p:dataTable>  
                            </p:overlayPanel>
                         </p:column>  
                                  
                        <p:column headerText="Recolección" 
                                  styleClass="columna">
                            <p:commandButton id="recoleccionBtn" type="button" 
                                             title="Ver Recolección" icon="ui-icon-search"/>  
                            <p:overlayPanel id="recoleccionPnl" for="recoleccionBtn" 
                                            appendToBody="true" showEvent="mouseup"
                                            hideEvent="mouseup" hideEffect="fade" 
                                            dynamic="true">  
                                <p:dataTable id="tableRecoleccion" rows="1"
                                             var="recoleccion" value="#{especimen}">  
                                   <p:column headerText="Tipo de Recolección"
                                              styleClass="columna">
                                         <h:outputText value="#{especimen.recoleccion.tiporecoleccion == 'I' ? 
                                                                'Internacional' : 'Nacional'}"/> 
                                  </p:column>
                                   <p:column headerText="Latitud"
                                            styleClass="columna">
                                         <h:outputText  value="#{especimen.recoleccion.latitud}"/> 
                                  </p:column>
                                  <p:column headerText="Longitud"
                                            styleClass="columna">
                                         <h:outputText value="#{especimen.recoleccion.longitud}"/> 
                                  </p:column>
                                    <p:column headerText="Observaciones"
                                              styleClass="columna">
                                         <h:outputText value="#{especimen.recoleccion.observaciones}"/> 
                                  </p:column>                                    
                               </p:dataTable>  
                            </p:overlayPanel>
                         </p:column>  
                                  
                        <p:column headerText="Detalle"
                                  styleClass="columna">
                                <p:commandButton id="detalleBtn" title="Ver detalle" 
                                                 icon="ui-icon-search"
                                                 type="button" update="@form"/>
                                <p:overlayPanel id="detalleOpn" for="detalleBtn" 
                                                dynamic="true" appendToBody="true" 
                                                showEvent="mouseup" hideEffect="fade" 
                                                hideEvent="mouseup">  
                                        
                                    <p:panel rendered="#{especimen.tipoespecimen == 'A'}">
                                    <p:dataTable id="tableEspecimenAcuatico" rows="1"
                                                 var="acuatico" value="">  
                                            <p:column headerText="Tipo Sustrato" 
                                                      styleClass="columna">
                                                <h:outputText value="#{especimen.tiposustrato}"/> 
                                            </p:column>
                                            <p:column headerText="Profundidad(mm)"
                                                      styleClass="columna">
                                                     <h:outputText value="#{especimenBean.castAcuatico(especimen).profundidad}"/> 
                                            </p:column>
                                            <p:column headerText="Salinidad(PSU)"
                                                      styleClass="columna">
                                                 <h:outputText value="#{especimenBean.castAcuatico(especimen).salinidad}"/>
                                            </p:column>
                                            <p:column headerText="PH"
                                                      styleClass="columna">
                                                 <h:outputText value="#{especimenBean.castAcuatico(especimen).ph}"/>
                                            </p:column>
                                            <p:column headerText="Condicción Marea"
                                                      styleClass="columna">
                                                 <h:outputText value="#{especimenBean.castAcuatico(especimen).condicionmarea}"/>
                                            </p:column>
                                            <p:column headerText="Hospedero"
                                                      styleClass="columna">
                                                 <h:outputText value="#{especimenBean.castAcuatico(especimen).hospedero}"/>
                                            </p:column>
                                    </p:dataTable>
                               </p:panel>
                               <p:panel rendered="#{especimen.tipoespecimen  == 'T'}">
                                    <p:dataTable id="tableEspecimenTerrestre" rows="1" 
                                                 var="terrestre" value="">  
                                            <p:column headerText="Tipo Sustrato" 
                                                      styleClass="columna">
                                                <h:outputText value="#{especimen.tiposustrato}"/> 
                                            </p:column>
                                            <p:column headerText="Altitud"
                                                      styleClass="columna">
                                                 <h:outputText value="#{especimenBean.castTerrestre(especimen).altitud}"/>
                                            </p:column>
                                            <p:column headerText="Hospedero"
                                                      styleClass="columna">
                                                 <h:outputText value="#{especimenBean.castTerrestre(especimen).hospedero}"/>
                                            </p:column>
                                    </p:dataTable>
                                   </p:panel>     
                               </p:overlayPanel>
                        </p:column>
                        
                        <p:column headerText="Modificar"
                                  styleClass="columna"
                                  rendered="#{sesionBean.verificarPermiso('modificar','especimen')}">
                                 <p:commandButton id="modificarBtn" 
                                                  icon="ui-icon-pencil" title="Modificar" 
                                                  actionListener="#{especimenBean.prepararModificacion(especimen)}"
                                                  update=":guardarEspecimenFrm:guardarEspecimenWzd" 
                                                  oncomplete="guardarEspecimenWgt.show()" >
                                     <f:setPropertyActionListener target="#{especimenBean.operacionActual}" 
                                                                  value="ACTUALIZACION" />
                                     <f:setPropertyActionListener target="#{especimenBean.tipoEspecimen}" 
                                                                  value="#{especimenBean.entidad.tipoespecimen == 'T' ? 'TERRESTRE' : 'ACUATICO'}" />
                                </p:commandButton>
                         </p:column>
                         <p:column headerText="Eliminar"
                                   styleClass="columna"
                                   rendered="#{sesionBean.verificarPermiso('eliminar','especimen')}">
                                 <p:commandButton id="eliminarBtn" title="Eliminar" 
                                                  actionListener="#{especimenBean.prepararEliminacion(especimen)}"
                                                  icon="ui-icon-trash" update="@form" 
                                                  oncomplete="confirmacionWgt.show()">
                                     <f:setPropertyActionListener target="#{especimenBean.operacionActual}" 
                                                                  value="ELIMINACION" />
                                 </p:commandButton>
                         </p:column>
                         <f:facet name="footer">
                               <p:commandButton id="agregarBtn" 
                                     icon="ui-icon-document" 
                                     value="Nuevo Especimen"
                                     actionListener="#{especimenBean.prepararAdicion}" 
                                     update=":guardarEspecimenFrm:guardarEspecimenWzd" 
                                     oncomplete="guardarEspecimenWgt.show()" 
                                     style="float:left;"
                                     rendered="#{sesionBean.verificarPermiso('agregar','especimen')}">
                                   <f:setPropertyActionListener target="#{especimenBean.operacionActual}" 
                                                                value="INSERCION" />
                               </p:commandButton>
                          </f:facet>
                    </p:dataTable>
                </h:form>
            </p:panel>
        </center>
    </ui:define>
    <ui:define name="extra">
            <!-- Dialogo para insertar/Modificar Especimen -->
        <p:dialog id="guardarEspecimenDlg" 
                  header="Datos de Espécimen" 
                  widgetVar="guardarEspecimenWgt" 
                    resizable="false" modal="true" width="600"
                    style="font-size: 85%" 
                    draggable="true" closable="false" >
            <h:form id="guardarEspecimenFrm">
                
                <p:messages id="mensajesMsg" globalOnly="true" />
                    <p:wizard id="guardarEspecimenWzd" 
                              widgetVar="especimenWgt"
                              nextLabel="Siguiente"
                              backLabel="Anterior"
                              showStepStatus="false"
                              flowListener="#{especimenBean.procesarFlujoAdicion}">  
                      <p:tab id="generalTab" title="Datos Generales" >  
                        <p:panel >   
                                <h:panelGrid columns="3" style="font-size: 120%">  
                                    <h:outputLabel for="codigoespecimenTxt" value="Código Espécimen:"  />
                                    <p:inputText id="codigoespecimenTxt" 
                                                 value="#{especimenBean.entidad.codigoespecimen}" 
                                                 rendered="#{especimenBean.operacionActual == 'INSERCION'}"
                                                 required="true"
                                                 requiredMessage="#{vldmsg.requerido}">
                                    </p:inputText>
                                    <p:outputLabel for="codigoespecimenTxt" 
                                                   value="#{especimenBean.entidad.codigoespecimen}" 
                                                   rendered="#{especimenBean.operacionActual == 'ACTUALIZACION'}" />
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="codigoespecimenTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:codigoespecimenTxt')}">
                                             <p:message id="codigoespecimenMsg" for="codigoespecimenTxt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                                    
                                 <h:outputLabel for="codigoanimalTxt" value="Nombre Científico:" />
                                 <p:selectOneMenu id="codigoanimalTxt"                                                   
                                                  required="true" filter="true"
                                                  value="#{especimenBean.entidad.animal}" 
                                                  rendered="#{especimenBean.operacionActual == 'INSERCION' }">
                                       <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                       <f:selectItems value="#{especimenBean.listaAnimal}" />
                                       <f:converter converterId="animalConverter" />
                                  </p:selectOneMenu>
                                 <p:outputLabel for="codigoanimalTxt" 
                                                value="#{especimenBean.entidad.animal.nombrecientifico}" 
                                                rendered="#{especimenBean.operacionActual == 'ACTUALIZACION'}" />
                                      <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="codigoanimalTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:codigoanimalTxt')}">
                                             <p:message id="codigoanimalMsg" for="codigoanimalTxt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                    
                                 <h:outputLabel for="codigorecoleccionTxt" value="Fecha Recolección:" />
                                 <p:selectOneMenu id="codigorecoleccionTxt" filter="true"
                                                  required="true" 
                                                  value="#{especimenBean.entidad.recoleccion}"  
                                                  rendered="#{especimenBean.operacionActual == 'INSERCION' }">
                                       <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                       <f:selectItems value="#{especimenBean.listaRecoleccion}" />
                                       <f:converter converterId="recoleccionConverter" />
                                  </p:selectOneMenu>
                                         <h:outputText value="#{especimenBean.entidad.recoleccion.fecharecoleccion}"
                                                       rendered="#{especimenBean.operacionActual == 'ACTUALIZACION'}">
                                                    <f:convertDateTime pattern="dd/MM/yyyy"/>
                                         </h:outputText> 
                                      <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="codigorecoleccionTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:codigorecoleccionTxt')}">
                                             <p:message id="codigorecoleccionMsg" for="codigorecoleccionTxt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                                  
                                   <h:outputLabel for="tipoespecimenRbt" value="Tipo de Espécimen:"  />  
                                   <p:selectOneRadio id="tipoespecimenRbt" required="true" 
                                                     value="#{especimenBean.entidad.tipoespecimen}" 
                                                     rendered="#{especimenBean.operacionActual == 'INSERCION'}">  
                                        <f:selectItem itemLabel="Terrestre" itemValue="T" />  
                                        <f:selectItem itemLabel="Acuatico" itemValue="A" /> 
                                        <p:ajax event="change" 
                                                listener="#{especimenBean.actualizarTipoEspecimen}"/>
                                   </p:selectOneRadio>
                                   <p:outputLabel for="tipoespecimenRbt" 
                                                  value="#{especimenBean.entidad.tipoespecimen == 'T' ? 'Terrestre' : 'Acuatico'}" 
                                                  rendered="#{especimenBean.operacionActual == 'ACTUALIZACION'}"/>
                                      <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="tipoespecimenRbt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:tipoespecimenRbt')}">
                                             <p:message id="tipoespecimenMsg" for="tipoespecimenRbt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                                   
                                   <h:outputLabel for="numeromuestraTxt" value="Número de Muestras:" />
                                   <p:inputText id="numeromuestraTxt" 
                                                value="#{especimenBean.entidad.numeromuestras}" 
                                                required="true">
                                                <f:attribute name="minimo" value="0" />
                                                <f:validator validatorId="numeroValidator" />
                                   </p:inputText>
                                   <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="numeromuestraTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:numeromuestraTxt')}">
                                                        <p:message id="numeromuestraMsg" for="numeromuestraTxt"
                                                                    display="text" />
                                            </p:tooltip>
                                    </p:panel> 
                                   
                                   <h:outputLabel for="tipoconservacionTxt" value="Tipo Conservación:" style="width:160px; font-size: 100%"/>
                                   <p:selectOneMenu id="tipoconservacionTxt" required="true"
                                                    value="#{especimenBean.entidad.tipoconservacion}">
                                        <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                        <f:selectItem itemLabel="Seco" itemValue="Seco" />
                                        <f:selectItem itemLabel="Disecado" itemValue="Disecados" />
                                        <f:selectItem itemLabel="Alcohol" itemValue="Alcohol" />
                                    </p:selectOneMenu>
                                    
                                      <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="tipoconservacionTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:tipoconservacionTxt')}">
                                             <p:message id="tipoconservacionMsg" for="tipoconservacionTxt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                                   
                                    <h:outputLabel for="determinoTxt" value="Determinó:" />
                                    <p:inputText id="determinoTxt" 
                                                 value="#{especimenBean.entidad.determino}">
                                                <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                                <f:attribute name="formato" value="Solo Caracteres" />
                                                <f:validator validatorId="regexValidator" />
                                    </p:inputText> 
                                      <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="determinoTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:determinoTxt')}">
                                             <p:message id="determinoMsg" for="determinoTxt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                                    
                                    <h:outputLabel for="confirmoTxt" value="Confirmó:" />
                                    <p:inputText id="confirmoTxt" 
                                                 value="#{especimenBean.entidad.confirmo}">
                                                <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                                <f:attribute name="formato" value="Solo Caracteres" />
                                                <f:attribute name="opcional" value="true" />
                                                <f:validator validatorId="regexValidator" />
                                    </p:inputText> 
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="confirmoTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:confirmoTxt')}">
                                             <p:message id="confirmoMsg" for="confirmoTxt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                                    
                                    <h:outputLabel for="ubicacionalmacenTxt" value="Ubicación Almacen:" />
                                    <p:inputText id="ubicacionalmacenTxt" required="true"
                                                 value="#{especimenBean.entidad.ubicacionalmacen}"/> 
                                      <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="ubicacionalmacenTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:ubicacionalmacenTxt')}">
                                             <p:message id="ubicacionalmacenMsg" for="ubicacionalmacenTxt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                                </h:panelGrid>  
                            </p:panel>  
                        </p:tab>  
                        <p:tab id="fisicoTab" title="Fisico">  
                            <p:panel >   
                                <h:panelGrid columns="3" columnClasses="label, value"  style="font-size: 120%" >  
                                      <h:outputLabel for="pesoTxt" value="Peso(gr.):" />
                                      <p:inputText id="pesoTxt" required="true"
                                                   value="#{especimenBean.entidad.peso}">
                                                    <f:attribute name="minimo" value="0" />
                                                    <f:validator validatorId="numeroValidator" />
                                    </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="pesoTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:pesoTxt')}">
                                                        <p:message id="pesoMsg" for="pesoTxt"
                                                                   display="text" />
                                               </p:tooltip>
                                      </p:panel>  
                                       
                                      <h:outputLabel for="sexoTxt" value="Sexo:" style="width:160px; font-size: 100%"/>
                                      <p:selectOneMenu id="sexoTxt" required="true"
                                                       value="#{especimenBean.entidad.sexo}">
                                         <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                         <f:selectItem itemLabel="Femenino" itemValue="F" />
                                         <f:selectItem itemLabel="Masculino" itemValue="M" />
                                         <f:selectItem itemLabel="Hemafrodita" itemValue="A" />
                                         <f:selectItem itemLabel="Indefinido" itemValue="I" />
                                      </p:selectOneMenu>
                                       <br/>
                                       
                                      <h:outputLabel for="madurezTxt" value="Madurez:" style="width:160px; font-size: 100%"/>
                                      <p:selectOneMenu id="madurezTxt" required="true"
                                                       value="#{especimenBean.entidad.madurez}">
                                        <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                        <f:selectItem itemLabel="Huevo" itemValue="HUEVO" />
                                        <f:selectItem itemLabel="Larva" itemValue="LARVA" />
                                        <f:selectItem itemLabel="Feto" itemValue="FETO" />
                                        <f:selectItem itemLabel="Joven" itemValue="JOVEN" />
                                        <f:selectItem itemLabel="Juvenil" itemValue="JUVENIL" />
                                        <f:selectItem itemLabel="Adulto" itemValue="ADULTO" />
                                     </p:selectOneMenu>
                                     <br/>
                                      
                                     <h:outputLabel for="longitudTxt" value="Longitud(mm):" />
                                     <p:inputText id="longitudTxt" required="true"
                                                  value="#{especimenBean.entidad.longitud}">
                                                  <f:attribute name="minimo" value="0" />
                                                  <f:validator validatorId="numeroValidator" />
                                    </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="longitudTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:longitudTxt')}">
                                                        <p:message id="longitudMsg" for="longitudTxt"
                                                                   display="text" />
                                            </p:tooltip>
                                    </p:panel> 
                                     
                                     <h:outputLabel for="diametroTxt" value="Diametro(mm):" />
                                     <p:inputText id="diametroTxt" required="true"
                                                  value="#{especimenBean.entidad.diametro}">
                                                  <f:attribute name="minimo" value="0" />
                                                  <f:validator validatorId="numeroValidator" />
                                    </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="diametroTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:diametroTxt')}">
                                                        <p:message id="diametroMsg" for="diametroTxt"
                                                                   display="text" />
                                            </p:tooltip>
                                    </p:panel> 
                                     
                                     <h:outputLabel for="alturaTxt" value="Altura(mm):" />
                                     <p:inputText id="alturaTxt" required="true"
                                                  value="#{especimenBean.entidad.altura}">
                                                  <f:attribute name="minimo" value="0" />
                                                  <f:validator validatorId="numeroValidator" />
                                    </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="alturaTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:alturaTxt')}">
                                                        <p:message id="alturaMsg" for="alturaTxt"
                                                                   display="text" />
                                            </p:tooltip>
                                    </p:panel> 
                                     
                                      <h:outputLabel for="texturaTxt" value="Textura:" 
                                                     style="width:160px; font-size: 100%"/>
                                      <p:inputText id="texturaTxt" required="true" value="#{especimenBean.entidad.textura}">
                                          
                                      </p:inputText>
                                      <br/>
                                      
                                     <h:outputLabel for="coloracionTxt" value="Coloración:" />
                                     <p:inputText id="coloracionTxt" required="true"
                                                  value="#{especimenBean.entidad.coloracion}">
                                                <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                                <f:attribute name="formato" value="Solo Caracteres" />
                                                <f:validator validatorId="regexValidator" />
                                    </p:inputText> 
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="coloracionTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:coloracionTxt')}">
                                             <p:message id="coloracionMsg" for="coloracionTxt"
                                                        display="text" />
                                            </p:tooltip>
                                    </p:panel>
                                     </h:panelGrid>  
                            </p:panel>  
                        </p:tab>
          
                        <p:tab id="descripcionTab" title="Descripción" >  
                            <p:panel >  
                                <h:panelGrid columns="3"  style="font-size: 120%"  >  
                                       <p:outputLabel for="fotografiaTxt" value="Fotografia:" />
                                       <p:fileUpload uploadLabel="Subir" cancelLabel="Cancelar" id="fotografiaTxt" mode="advanced"
                                                      fileUploadListener="#{especimenBean.handleFileUpload}"  
                                                      sizeLimit="4194304"
                                                      allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>  
                                       <br/>
                                      
                                       <p:column>
                                                <h:outputLabel for="descripciontaxonomicaTxa" 
                                                                value="Descripción:" />
                                                <br/>
                                                <h:outputText id="descripciontaxonomicacontador" 
                                                              style="font-size: 80%"/>
                                       </p:column>
                                       <p:inputTextarea id="descripciontaxonomicaTxa" 
                                                       maxlength="1000" autoResize="false"
                                                       value="#{especimenBean.entidad.descripciontaxonomica}" 
                                                       title="Opcional"
                                                       counter="descripciontaxonomicacontador"
                                                       counterTemplate="Restan {0} caracteres."/>
                                      <br/>
                                       <p:column>
                                                <h:outputLabel for="observacionTxt" 
                                                                value="Observación:" />
                                                <br/>
                                                <h:outputText id="observacioncontador" 
                                                              style="font-size: 80%"/>
                                       </p:column>
                                      <p:inputTextarea id="observacionTxt" 
                                                       maxlength="1000" autoResize="false"
                                                       value="#{especimenBean.entidad.observaciones}" 
                                                       title="Opcional"
                                                       counter="observacioncontador"
                                                       counterTemplate="Restan {0} caracteres."/> 
                                      <br/>
                                      
                                      <h:outputLabel for="estatuslocalTxt" value="Estatus Local:" />
                                      <p:selectOneMenu id="estatuslocalTxt"
                                                       value="#{especimenBean.entidad.estatuslocal}">
                                        <f:selectItem itemLabel="Seleccione..." itemValue="" />
                                        <f:selectItem itemLabel="Raro" itemValue="Raro" />
                                        <f:selectItem itemLabel="Abundante" itemValue="Abundante" />
                                        <f:selectItem itemLabel="En peligro" itemValue="En peligro" />
                                        <f:selectItem itemLabel="Extinto" itemValue="Extinto" />
                                        <f:selectItem itemLabel="Amenaza" itemValue="Amenaza" />
                                      </p:selectOneMenu>
                                      <br/>
                                      
                                      <h:outputLabel for="donacionRbt" value="Donación: " />  
                                      <p:selectOneRadio id="donacionRbt" required="true"
                                                        value="#{especimenBean.entidad.donacion}">  
                                        <f:selectItem itemLabel="Si" itemValue="True"/>  
                                        <f:selectItem itemLabel="No" itemValue="False"/> 
                                      </p:selectOneRadio> 
                                      <br/>
                                      
                                      <p:column>
                                                <h:outputLabel for="estadomuestraTxa" 
                                                                value="Estado Muestra:" />
                                                <br/>
                                                <h:outputText id="estadomuestracontador" 
                                                              style="font-size: 80%"/>
                                       </p:column>
                                      <p:inputTextarea id="estadomuestraTxa" 
                                                       maxlength="1000" autoResize="false"
                                                       value="#{especimenBean.entidad.estadomuestra}" 
                                                       title="Opcional"
                                                       counter="estadomuestracontador"
                                                       counterTemplate="Restan {0} caracteres.">
                                                       <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                                       <f:attribute name="formato" value="requerido" />
                                                        <f:validator validatorId="regexValidator" />
                                      </p:inputTextarea>
                                      <p:panel style="border:none; font-size: 85%">
                                                <p:tooltip for="estadomuestraTxa" 
                                                            showEvent="focus" 
                                                            hideEvent="blur" 
                                                    rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:estadomuestraTxa')}">
                                                    <p:message id="estadomuestraMsg" 
                                                               for="estadomuestraTxa"
                                                                display="text" />
                                                </p:tooltip>
                                      </p:panel>
                                      
                                      <h:outputLabel for="habitatterrestreTxt" value="Habitát:" />
                                     
                                      <p:inputTextarea id="habitatterrestreTxt" required="true"
                                                        maxlength="1000" autoResize="false"
                                                        value="#{especimenBean.entidad.habitat}">
                                                     <f:attribute name="regex" value="#{regex.textoobligatoriocompleto}" />
                                                     <f:attribute name="formato" value="Solo Caracteres" />
                                                     <f:validator validatorId="regexValidator" />
                                      </p:inputTextarea>
                                      <p:panel style="border:none; font-size: 85%">
                                                 <p:tooltip for="habitatterrestreTxt" 
                                                            showEvent="mouseover" 
                                                            hideEvent="mouseout" 
                                                            rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:habitatterrestreTxt')}">
                                                            <p:message id="habitatterrestreMsg" 
                                                                       for="habitatterrestreTxt"
                                                                       display="text" />
                                                 </p:tooltip>
                                      </p:panel>   
                                     
                                      
                                      
                                      <h:outputLabel for="tiposustratoTxt" value="Tipo sustrato:" />
                                      <p:inputText id="tiposustratoTxt" required="true"
                                                   value="#{especimenBean.entidad.tiposustrato}">
                                                     <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                                     <f:attribute name="formato" value="Solo Caracteres" />
                                                     <f:validator validatorId="regexValidator" />
                                      </p:inputText>
                                      <p:panel style="border:none; font-size: 85%">
                                                 <p:tooltip for="tiposustratoTxt" 
                                                            showEvent="mouseover" 
                                                            hideEvent="mouseout" 
                                                            rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:tiposustratoTxt')}">
                                                            <p:message id="tiposustratoMsg" 
                                                                       for="tiposustratoTxt"
                                                                       display="text" />
                                                 </p:tooltip>
                                      </p:panel>   
                                </h:panelGrid>  
                            </p:panel>  
                        </p:tab> 
                        <p:tab id="detalleTab" title="Detalle" >
                  <!-- Panel para datos de los especímenes acuaticos -->
                    <p:panel id="acuaticoPnl"
                             rendered="#{especimenBean.tipoEspecimen == 'ACUATICO'}">  
                                <h:panelGrid columns="3"  style="font-size: 120%" >  
                                      <h:outputLabel for="phTxt" value="PH:" />
                                      <p:inputText id="phTxt" required="true"
                                                   value="#{especimenBean.acuatico.ph}">
                                                   <f:attribute name="minimo" value="0" />
                                                   <f:attribute name="maximo" value="14" />
                                                   <f:validator validatorId="numeroValidator" />
                                    </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                            <p:tooltip for="phTxt" 
                                                       showEvent="mouseover" 
                                                       hideEvent="mouseout" 
                                                       rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:phTxt')}">
                                                      <p:message id="phMsg" for="phTxt"
                                                                  display="text" />
                                            </p:tooltip>
                                    </p:panel> 
                                                                             
                                      <h:outputLabel for="profundidadTxt" 
                                                     value="Profundidad (mm):" />
                                      <p:inputText id="profundidadTxt" required="true"
                                                   value="#{especimenBean.acuatico.profundidad}">
                                                   <f:attribute name="minimo" value="0" />
                                                   <f:validator validatorId="numeroValidator" />
                                    </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                            <p:tooltip for="profundidadTxt" 
                                                       showEvent="mouseover" 
                                                       hideEvent="mouseout" 
                                                       rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:profundidadTxt')}">
                                                      <p:message id="profundidadMsg" 
                                                                  for="profundidadTxt"
                                                                  display="text" />
                                            </p:tooltip>
                                    </p:panel> 
                                     
                                      <h:outputLabel for="codicionmareaTxt" value="Condición Marea:" />
                                      <p:inputText id="codicionmareaTxt" required="true"
                                                   value="#{especimenBean.acuatico.condicionmarea}">
                                                   <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                                   <f:attribute name="formato" value="Solo Caracteres" />
                                                    <f:validator validatorId="regexValidator" />
                                      </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="codicionmareaTxt" 
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout" 
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:codicionmareaTxt')}">
                                                        <p:message id="codicionmareaMsg" 
                                                                    for="codicionmareaTxt"
                                                                    display="text" />
                                            </p:tooltip>
                                      </p:panel>
                                      
                                      <h:outputLabel for="salinidadTxt" value="Salinidad(PSU):" />
                                      <p:inputText id="salinidadTxt" required="true"
                                                   value="#{especimenBean.acuatico.salinidad}">
                                                   <f:attribute name="minimo" value="0" />
                                                   <f:validator validatorId="numeroValidator" />
                                    </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                            <p:tooltip for="salinidadTxt" 
                                                       showEvent="mouseover" 
                                                       hideEvent="mouseout" 
                                                       rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:salinidadTxt')}">
                                                      <p:message id="salinidadMsg" for="salinidadTxt"
                                                                  display="text" />
                                            </p:tooltip>
                                    </p:panel> 
                                      
                                      <h:outputLabel for="hospederoTxt" value="Hospedero:" />
                                      <p:inputText id="hospederoTxt" required="true"
                                                   value="#{especimenBean.acuatico.hospedero}">
                                                   <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                                   <f:attribute name="formato" value="Solo Caracteres" />
                                                    <f:validator validatorId="regexValidator" />
                                      </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                             <p:tooltip for="hospederoTxt"
                                                        showEvent="mouseover" 
                                                        hideEvent="mouseout"  
                                                        rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:hospederoTxt')}">
                                                        <p:message id="hospederoMsg" for="hospederoTxt"
                                                                    display="text" />
                                            </p:tooltip>
                                      </p:panel>
                                      
                                      
                                </h:panelGrid>  
                            </p:panel>  
                  
               <!-- Datos para los especímenes Terrestre -->
                            <p:panel id="terrrestrePnl" 
                                     rendered="#{especimenBean.tipoEspecimen == 'TERRESTRE'}">  
                                <h:panelGrid columns="3"  style="font-size: 120%" >                                                             
                                      <h:outputLabel for="altitudTxt" value="Altitud (mm):" />
                                      <p:inputText id="altitudTxt" required="true" 
                                                   value="#{especimenBean.terrestre.altitud}">
                                                   <f:attribute name="minimo" value="0" />
                                                   <f:validator validatorId="numeroValidator" />
                                    </p:inputText>
                                    <p:panel style="border:none; font-size: 85%">
                                            <p:tooltip for="altitudTxt" 
                                                       showEvent="mouseover" 
                                                       hideEvent="mouseout" 
                                                       rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:altitudTxt')}">
                                                      <p:message id="altitudMsg" for="altitudTxt"
                                                                  display="text" />
                                            </p:tooltip>
                                    </p:panel> 
                                     
                                      <h:outputLabel for="hospederoterrestreTxt" value="Hospedero:" />
                                      <p:inputText id="hospederoterrestreTxt" required="true"
                                                   value="#{especimenBean.terrestre.hospedero}">
                                                     <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                                     <f:attribute name="formato" value="Solo Caracteres" />
                                                     <f:validator validatorId="regexValidator" />
                                      </p:inputText>
                                      <p:panel style="border:none; font-size: 85%">
                                                 <p:tooltip for="hospederoterrestreTxt" 
                                                            showEvent="mouseover" 
                                                            hideEvent="mouseout" 
                                                            rendered="#{especimenBean.tieneErrores('guardarEspecimenFrm:hospederoterrestreTxt')}">
                                                            <p:message id="hospederoterrestreMsg" 
                                                                       for="hospederoterrestreTxt"
                                                                       display="text" />
                                                 </p:tooltip>
                                      </p:panel>
                                </h:panelGrid>  
                            </p:panel>  
                        </p:tab> 
                    </p:wizard>  
                <br/>
                <p:separator  />
                <br/>
                <p:commandButton id="guardarBtn" 
                                                       actionListener="#{especimenBean.guardarEntidad}" 
                                                        oncomplete="if( !args.validationFailed ){especimenWgt.loadStep(especimenWgt.cfg.steps[0],true); guardarEspecimenWgt.hide()}"
                                                        update="@form, :tablaEspecimenFrm:tablaEspecimenDtb" 
                                                        title="Guardar" icon="ui-icon-disk" 
                                                        style="float:right; font-size: 85%"
                                                        value="Guardar"/>
                   <p:commandButton id="cancelarBtn"  
                                                        actionListener="#{especimenBean.revertirCambios}"
                                                        onclick="guardarEspecimenWgt.hide()" 
                                                        value="Cancelar" icon="ui-icon-cancel" 
                                                        style="float:right; font-size: 85%"
                                                        title="Cancelar" immediate="true"/>
            </h:form>
        </p:dialog>
            
        <!-- Diálogo de confirmación de eliminación -->
        <p:confirmDialog id="confirmacionDlg" 
                         message="¿Está seguro que desea eliminar el registro?" 
                         header="Confirmación" 
                         widgetVar="confirmacionWgt" 
                         severity="alert"  width="300"
                         style="font-size: 85%">    
            <h:form>
            <p:messages 
             id="mensajesMsg" 
             globalOnly="true" />
                    <p:commandButton value="Eliminar"
                                     actionListener="#{especimenBean.eliminarEntidad}"
                                     update="@form,:tablaEspecimenFrm:tablaEspecimenDtb"
                                     oncomplete="if ( !args.validationFailed ) confirmacionWgt.hide()"
                                     icon="ui-icon-trash" 
                                     style="float:right; font-size: 85%"/>
                    <p:commandButton value="Cancelar"
                                     update="@form"
                                     oncomplete="confirmacionWgt.hide()" 
                                     icon="ui-icon-cancel" 
                                     style="float:right; font-size: 85%">
                        <f:setPropertyActionListener target="#{especimenBean.operacionActual}" 
                                                     value="NINGUNA" />
                    </p:commandButton>
            </h:form>
        </p:confirmDialog>
    </ui:define>
</ui:composition>